// 引入joi
const Joi = require('joi');
// 引入用户集合构造函数
const { User, validateUser } = require('../../model/user')
// 引入加密
const bcrypt = require('bcrypt');


module.exports = async (req, res,next) => {
    // 定义验证规则

    try {
        await validateUser(req.body);
    } catch (e) {
        // 验证未通过
        // 重定向回注册页
        // return res.redirect(`/admin/user-edit?message=${e.message}`);
        // JSON.stringify()将对象转换为字符串
        
        return next(JSON.stringify({path:'/admin/user-edit',message: e.message}));
    }

    // 查询邮箱地址是否冲突
    let user = await User.findOne({ email: req.body.email })
    //    如果用户存在，说明地址
    if (user) {
        // return res.redirect(`/admin/user-edit?message=邮箱地址被占用了`)
        return next(JSON.stringify({path:'/admin/user-edit',message:'邮箱地址被占用了'}))
    }
    //   对密码进行加密
    const salt = await bcrypt.genSalt(10);
    const password = await bcrypt.hash(req.body.password, salt);
    // 替换密码
    req.body.password = password;
    // res.send(req.body)
    // 添加到数据库中,切回用户页面
    await User.create(req.body);
    res.redirect('/admin/user')
}

